﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using VanTaiBLL;
using VanTaiData;
using VanTaiProperty;
using Roles;
using System.Web.UI.HtmlControls;

namespace VanTaiTMS.Page
{
    public partial class phieu_nhap : System.Web.UI.Page
    {
        #region[Define]
        private DataTable dtDOEntry;
        private DataTable dtDOEntry_Detail_Edit;
        private DataTable dtUnit;
        private DataTable dtSearch;
        protected string SuggestionList;
        protected string StrAlert = "";
        private DataTable dtAutoComplete;
        private static bool flag = false;
        private clsTMDO_ENTRYBusiness clsDOEntry = new clsTMDO_ENTRYBusiness();
        private ClsTmUnitBusiness clsUnit = new ClsTmUnitBusiness();
        #endregion

        #region[Controller]
        protected void Page_Load(object sender, EventArgs e)
        {
            Autocomplate();
            if (!IsPostBack)
            {
                BindGridDO();
                BindGirdUnit();
            }
        }
        protected void cmdAddNew_Click(object sender, EventArgs e)
        {
            flag = true;
            lbThongBaoLoi.Text = "";
            txtMaHangHoa.Enabled = true;
            txtMaPhieuNhap.Enabled = true;
            ClearTextBox();
            OpenDialog("#phieunhap");
            imgSave.ToolTip = "Thêm mới";
            upNewUpdatePanel.Update();
        }
        protected void cmdEdit_Click(object sender, EventArgs e)
        {
            lbThongBaoLoi.Text = "";
            txtMaHangHoa.Enabled = true;
            txtMaPhieuNhap.Enabled = true;
            txtNgayNhap.Enabled = false;
            txtTenHangHoa.Enabled = false;
            txtTrongLuong.Enabled = false;
            txtDonGia.Enabled = false;
            drDonViTinh.Enabled = false;
            txtGhiChu.Enabled = false;
            for (int i = 0; i < ListViewAll.Items.Count; i++)
            {
                CheckBox chkView = (CheckBox)ListViewAll.Items[i].FindControl("chkList");
                Label lbTrangThai = (Label)ListViewAll.Items[i].FindControl("lbDuyet");
                if (chkView != null)
                {
                    if (chkView.Checked)
                    {
                        BindGridDO_Detail_Edit(Convert.ToInt32(ListViewAll.DataKeys[i].Value.ToString()));
                        OpenDialog("#phieunhap");
                        upNewUpdatePanel.Update();
                        imgSave.ToolTip = "Cập nhật";
                        flag = false;
                    }
                }
            }
        }
        protected void cmdDel_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < ListViewAll.Items.Count; i++)
            {
                CheckBox chkHide = (CheckBox)ListViewAll.Items[i].FindControl("chkList");
                Label lbTrangThai = (Label)ListViewAll.Items[i].FindControl("lbDuyet");
                if (chkHide != null)
                {
                    if (chkHide.Checked)
                    {
                        cmdAgree.Enabled = true;
                        BindGridDO_Detail_Edit(Convert.ToInt32(ListViewAll.DataKeys[i].Value.ToString()));
                        lbThongBaoXoa.Text = "Bạn có muốn xoá mẫu tin này không !";
                        OpenDialog("#thongbaoxoa");
                        upDatePanelThongBaoXoa.Update();
                        cmdAgree.Visible = true;
                        cmdClose.Text = "Bỏ qua";
                    }
                }
            }
        }
        protected void cmdSerach_Click(object sender, EventArgs e)
        {
            if (txtSearch.Text == "")
            {
                StrAlert += "<div class='alert alert-warning'>";
                StrAlert += "<a href='#' class='close' data-dismiss='alert'>&times;</a>";
                StrAlert += "Vui lòng nhập vào từ khoá để tìm kiếm !";
                StrAlert += "</div>";
            }
            else
            {
                Search(txtSearch.Text);
            }
        }
        protected void cmdRefesh_Click(object sender, EventArgs e)
        {
            txtSearch.Text = "";
            BindGridDO();
        }
        //-------------------List-View-----------------------
        protected void ListViewAll_ItemCommand(object sender, ListViewCommandEventArgs e)
        {
            try
            {
                lbThongBaoLoi.Text = "";
                txtMaHangHoa.Enabled = false;
                txtMaPhieuNhap.Enabled = false;
                txtNgayNhap.Enabled = false;
                txtTenHangHoa.Enabled = false;
                txtTrongLuong.Enabled = false;
                txtDonGia.Enabled = false;
                drDonViTinh.Enabled = false;
                txtGhiChu.Enabled = false;
                if (e.CommandName == "Accept")
                {
                    string SenderId = ((HtmlInputHidden)e.Item.FindControl("hiddenId")).Value;
                    BindGridDO_Detail_Edit(int.Parse(SenderId));
                    OpenDialog("#phieunhap");
                    upNewUpdatePanel.Update();
                    imgSave.ToolTip = "Cập nhật";
                    flag = false;
                }
            }
            catch (Exception ex)
            {
                lbThongBaoLoi.Text = ex.ToString();
                OpenDialog("#thongbao");
                updatePanelThongBao.Update();
            }
        }
        protected void ListViewAll_ItemDataBound(object sender, ListViewItemEventArgs e)
        {
            if (e.Item.ItemType == ListViewItemType.DataItem)
            {
                LinkButton linkListName = (LinkButton)e.Item.FindControl("linkListName");
                string _jsDouble1 = ClientScript.GetPostBackClientHyperlink(linkListName, "");


                linkListName.Attributes["ondblclick"] = _jsDouble1;
                linkListName.Attributes["onclick"] = "return false;";
            }
        }
        //-------------------Data-Pagger---------------------
        protected void DataPagerListAll_PreRender(object sender, EventArgs e)
        {
            BindGridDO();
        }
        //-------------------Button-Popup--------------------
        protected void imgSave_Click(object sender, ImageClickEventArgs e)
        {
            if (txtMaHangHoa.Text == "")
            {
                lbThongBaoLoi.Text = "Vui lòng điền vào mã hàng hoá !";
                OpenDialog("#thongbao");
                updatePanelThongBao.Update();
            }
            if (txtTenHangHoa.Text == "")
            {
                lbThongBaoLoi.Text = "Vui lòng điền vào tên hàng hoá !";
                OpenDialog("#thongbao");
                updatePanelThongBao.Update();
            }
            if (txtSoLuong.Text == "")
            {
                lbThongBaoLoi.Text = "Vui lòng điền vào số lượng !";
                OpenDialog("#thongbao");
                updatePanelThongBao.Update();
            }
            if (txtDonGia.Text == "")
            {
                lbThongBaoLoi.Text = "Vui lòng điền vào đơn giá !";
                OpenDialog("#thongbao");
                updatePanelThongBao.Update();
            }
            if (txtTrongLuong.Text == "")
            {
                lbThongBaoLoi.Text = "Vui lòng điền vào trọng lượng !";
                OpenDialog("#thongbao");
                updatePanelThongBao.Update();
            }
            if (drDonViTinh.SelectedValue.ToString() == "-1")
            {
                lbThongBaoLoi.Text = "Vui lòng chọn đơn vị tính !";
                OpenDialog("#thongbao");
                updatePanelThongBao.Update();
            }
            if (txtNgayNhap.Text == "")
            {
                lbThongBaoLoi.Text = "Vui lòng điền vào ngày nhập !";
                OpenDialog("#thongbao");
                updatePanelThongBao.Update();
            }
            if (txtNgayNhap.Text !="" && drDonViTinh.SelectedValue.ToString() !="-1" && txtMaHangHoa.Text != "" && txtTenHangHoa.Text != "" && txtSoLuong.Text != "" && txtDonGia.Text != "")
            {
                Insert();
            }
        }
        protected void imgrefesh_Click(object sender, ImageClickEventArgs e)
        {

        }
        protected void cmdAgree_Click(object sender, EventArgs e)
        {
            try
            {
                VanTaiBLL.clsTMDO_ENTRYBusiness.DeleteTMDO_ENTRY(int.Parse(lbIDXoa.Text));
                lbThongBaoXoa.Text = "Xoá thành công mẫu tin !";
                OpenDialog("#thongbaoxoa");
                upDatePanelThongBaoXoa.Update();
                cmdAgree.Visible = false;
                cmdClose.Text = "Đóng lại";
                BindGridDO();
            }
            catch (Exception ex)
            {
                lbThongBaoXoa.Text = ex.ToString();
                OpenDialog("#thongbaoxoa");
                upDatePanelThongBaoXoa.Update();
                cmdAgree.Visible = false;
                cmdClose.Text = "Đóng lại";
            }
        }
        protected void cmdClose_Click(object sender, EventArgs e)
        {
            CloseDialog("#thongbaoxoa");
        }
        protected void cmdCloseThongBao_Click(object sender, EventArgs e)
        {
            CloseDialog("#thongbao");
        }
        #endregion

        #region[Function]
        protected void BindGridDO()
        {
            dtDOEntry = clsDOEntry.Search(txtSearch.Text);
            if (dtDOEntry != null && dtDOEntry.Rows.Count > 0)
            {
                ListViewAll.DataSource = dtDOEntry;
                ListViewAll.DataBind();
                ListViewAll.Visible = true;
                DataPagerListAll.Visible = true;
            }
            else
            {
                ListViewAll.Visible = false;
                DataPagerListAll.Visible = false;
            }
        }
        protected void BindGridDO_Detail_Edit(int id)
        {
            dtDOEntry_Detail_Edit = clsDOEntry.BindGirdTMDO_ENTRY_Detail_Edit(id);
            if (dtDOEntry_Detail_Edit != null && dtDOEntry_Detail_Edit.Rows.Count > 0)
            {
                lbID.Text = dtDOEntry_Detail_Edit.Rows[0]["DO_ENTRY_ID"].ToString();
                lbIDXoa.Text = dtDOEntry_Detail_Edit.Rows[0]["DO_ENTRY_ID"].ToString();
                txtMaPhieuNhap.Text = dtDOEntry_Detail_Edit.Rows[0]["DO_ENTRY_Alias"].ToString();
                txtMaHangHoa.Text = dtDOEntry_Detail_Edit.Rows[0]["DO_Alias"].ToString();
                txtTenHangHoa.Text = dtDOEntry_Detail_Edit.Rows[0]["DO_Name"].ToString();
                txtSoLuong.Text = dtDOEntry_Detail_Edit.Rows[0]["DO_Quality"].ToString();
                txtDonGia.Text = String.Format("{0:0,00}", dtDOEntry_Detail_Edit.Rows[0]["DO_ENTRY_Price"]).Replace(".", ",");
                txtNgayNhap.Text = String.Format("{0:dd/MM/yyy}", dtDOEntry_Detail_Edit.Rows[0]["DO_ENTRY_Date"]);
                if (dtDOEntry_Detail_Edit.Rows[0]["DO_Unit_ID"] != DBNull.Value)
                {
                    drDonViTinh.SelectedValue = dtDOEntry_Detail_Edit.Rows[0]["DO_Unit_ID"].ToString();
                }
                else
                {
                    drDonViTinh.SelectedIndex = -1;
                }
                txtTrongLuong.Text = dtDOEntry_Detail_Edit.Rows[0]["NetWeight"].ToString();
                txtGhiChu.Text = dtDOEntry_Detail_Edit.Rows[0]["DO_ENTRY_Discription"].ToString();
            }
        }
        protected void BindGirdUnit()
        {
            dtUnit = clsUnit.BindGirdTmUnit("");
            if (dtUnit != null && dtUnit.Rows.Count > 0)
            {
                drDonViTinh.DataSource = dtUnit;
                drDonViTinh.DataTextField = "TenDonViTinh";
                drDonViTinh.DataValueField = "STT";
                drDonViTinh.DataBind();
            }
        }
        protected void Insert()
        {
            //Insert
            if (flag)
            {
                InsertDO();
            }
            else//Update
            {
                UpdateDO();
            }
        }
        protected bool CheckInsert()
        {
            bool kiemtra = false;
            dtDOEntry = clsDOEntry.BindGirdTMDO_ENTRY();
            if (dtDOEntry != null && dtDOEntry.Rows.Count > 0)
            {
                foreach (DataRow dr in dtDOEntry.Rows)
                {
                    if (txtMaPhieuNhap.Text == dr["DO_ENTRY_Alias"].ToString())
                    {
                        kiemtra = true;
                    }
                }
            }
            return kiemtra;
        }
        protected bool CheckInsertEntry()
        {
            bool kiemtra = false;
            dtDOEntry = clsDOEntry.BindGirdTMDO_ENTRY();
            if (dtDOEntry != null && dtDOEntry.Rows.Count > 0)
            {
                foreach (DataRow dr in dtDOEntry.Rows)
                {
                    if (txtMaPhieuNhap.Text == dr["DO_Alias"].ToString())
                    {
                        kiemtra = true;
                    }
                }
            }
            return kiemtra;
        }
        protected void InsertDO()
        {
            try
            {
                if (CheckInsert())
                {
                    lbThongBaoLoi.Text = "Mã phiếu nhập này đã tồn tại xe này đã tồn tại !";
                    OpenDialog("#thongbao");
                    updatePanelThongBao.Update();
                }
                else
                {
                    if (CheckInsertEntry())
                    {
                        lbThongBaoLoi.Text = "Mã hàng hoá này đã tồn tại !";
                        OpenDialog("#thongbao");
                        updatePanelThongBao.Update();
                    }
                    else
                    {
                        VanTaiProperty.clsTMDO_ENTRYProperty obj = new clsTMDO_ENTRYProperty();
                        obj.DO_ENTRY_Alias = txtMaPhieuNhap.Text;
                        obj.DO_Alias = txtMaHangHoa.Text;
                        obj.DO_Name = txtTenHangHoa.Text;
                        obj.DO_Unit_ID = int.Parse(drDonViTinh.SelectedValue.ToString());
                        obj.DO_Quality = int.Parse(txtSoLuong.Text);
                        obj.DO_ENTRY_Price = float.Parse(txtDonGia.Text.Replace(",", ""));
                        txtThanhTien.Text = Convert.ToString(int.Parse(txtSoLuong.Text) * float.Parse(txtDonGia.Text));
                        obj.DO_ENTRY_Date = DateTime.Parse(txtNgayNhap.Text);
                        obj.NetWeight = float.Parse(txtTrongLuong.Text);
                        obj.DO_ENTRY_Status = 0;
                        obj.DO_Unit_ID = int.Parse(drDonViTinh.SelectedValue.ToString());
                        obj.DO_ENTRY_Discription = txtGhiChu.Text;
                        VanTaiBLL.clsTMDO_ENTRYBusiness.InsertTMDO_ENTRY(obj);
                        lbThongBaoLoi.Text = "Thêm mẫu tin thành công !";
                        OpenDialog("#thongbao");
                        updatePanelThongBao.Update();
                        BindGridDO();
                        ClearTextBox();
                    }
                }
            }
            catch (Exception ex)
            {
                lbThongBaoLoi.Text = ex.ToString();
                OpenDialog("#thongbao");
                updatePanelThongBao.Update();
            }
        }
        protected void UpdateDO()
        {
            try
            {
                VanTaiProperty.clsTMDO_ENTRYProperty obj = new clsTMDO_ENTRYProperty();
                obj.DO_ENTRY_ID = int.Parse(lbID.Text);
                obj.DO_ENTRY_Alias = txtMaPhieuNhap.Text;
                obj.DO_Alias = txtMaHangHoa.Text;
                obj.DO_Name = txtTenHangHoa.Text;
                obj.DO_Unit_ID = int.Parse(drDonViTinh.SelectedValue.ToString());
                obj.DO_Quality = int.Parse(txtSoLuong.Text);
                obj.DO_ENTRY_Price = float.Parse(txtDonGia.Text.Replace(",", ""));
                txtThanhTien.Text = Convert.ToString(int.Parse(txtSoLuong.Text) * float.Parse(txtDonGia.Text));
                obj.DO_ENTRY_Date = DateTime.Parse(txtNgayNhap.Text);
                obj.NetWeight = float.Parse(txtTrongLuong.Text);
                obj.DO_ENTRY_Status = 0;
                obj.DO_Unit_ID = int.Parse(drDonViTinh.SelectedValue.ToString());
                obj.DO_ENTRY_Discription = txtGhiChu.Text;
                VanTaiBLL.clsTMDO_ENTRYBusiness.UpdateTMDO_ENTRY(obj);
                lbThongBaoLoi.Text = "Cập nhật mẫu tin thành công !";
                OpenDialog("#thongbao");
                updatePanelThongBao.Update();
                BindGridDO();
            }
            catch (Exception ex)
            {
                lbThongBaoLoi.Text = ex.ToString();
                OpenDialog("#thongbao");
                updatePanelThongBao.Update();
            }
        }
        //AutoComplate
        protected void Autocomplate()
        {
            dtAutoComplete = clsDOEntry.BindGirdTMDO_ENTRY();
            if (dtAutoComplete != null && dtAutoComplete.Rows.Count > 0)
            {
                foreach (DataRow dr in dtAutoComplete.Rows)
                {
                    if (string.IsNullOrEmpty(SuggestionList))
                    {
                        SuggestionList += "\"" + dr["DO_ENTRY_Alias"].ToString().Replace("\n", " ") + "\",";
                        SuggestionList += "\"" + dr["DO_Name"].ToString().Replace("\n", " ") + "\",";
                        SuggestionList += "\"" + dr["DO_Alias"].ToString().Replace("\n", " ") + "\",";
                    }
                    else
                    {
                        SuggestionList += "\"" + dr["DO_ENTRY_Alias"].ToString().Replace("\n", " ") + "\",";
                        SuggestionList += "\"" + dr["DO_Name"].ToString().Replace("\n", " ") + "\",";
                        SuggestionList += "\"" + dr["DO_Alias"].ToString().Replace("\n", " ") + "\",";
                    }
                }
            }
        }
        protected void Search(string keywords)
        {
            dtSearch = clsDOEntry.Search(keywords);
            if (dtSearch != null && dtSearch.Rows.Count > 0)
            {
                ListViewAll.DataSource = dtSearch;
                ListViewAll.DataBind();
                ListViewAll.Visible = true;
                DataPagerListAll.Visible = true;

                StrAlert += "<div class='alert alert-success'>";
                StrAlert += "<a href='#' class='close' data-dismiss='alert'>&times;</a>";
                StrAlert += "Tìm thấy " + dtSearch.Rows.Count.ToString() + " mẫu tin !";
                StrAlert += "</div>";
            }
            else
            {
                ListViewAll.Visible = false;
                DataPagerListAll.Visible = false;
                StrAlert += "<div class='alert alert-error'>";
                StrAlert += "<a href='#' class='close' data-dismiss='alert'>&times;</a>";
                StrAlert += "Không tìm thấy mẫu tin nào !";
                StrAlert += "</div>";
            }
        }
        #endregion

        #region[OpenDialog]
        private void OpenDialog(string dialogId)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.Append("$('" + dialogId + "').dialog('open');");
            ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(),
               "scriptKey", sb.ToString(), true);
        }
        private void CloseDialog(string dialogId)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.Append("$('" + dialogId + "').dialog('close');");
            ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(),
               "scriptKey", sb.ToString(), true);
        }
        #endregion

        #region[ClearTexBox]
        protected void ClearTextBox()
        {
            txtMaPhieuNhap.Text = "";
            txtMaHangHoa.Text = "";
            txtTenHangHoa.Text = "";
            txtSoLuong.Text = "0";
            txtDonGia.Text = "0";
            txtThanhTien.Text = "0";
            txtTrongLuong.Text = "0";
            txtGhiChu.Text = "";
            drDonViTinh.SelectedIndex = -1;
        }
        #endregion
    }
}